package com.youlai.boot.factory.model.vo;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;

/**
 * 服装厂员工信息视图对象
 *
 * @author youlaitech
 * @since 2025-09-28 21:51
 */
@Getter
@Setter
@Schema( description = "服装厂员工信息视图对象")
public class FactoryMemberVO implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @Schema(description = "员工ID（主键）")
    private Long id;
    @Schema(description = "员工编号/工号")
    private String employeeId;
    @Schema(description = "姓名")
    private String name;
    @Schema(description = "性别")
    private String gender;
    @Schema(description = "身份证号")
    private String idCard;
    @Schema(description = "联系电话")
    private String phone;
    @Schema(description = "紧急联系人")
    private String emergencyContact;
    @Schema(description = "紧急联系人电话")
    private String emergencyPhone;
    @Schema(description = "家庭住址")
    private String address;
    @Schema(description = "照片URL")
    private String photoUrl;
    @Schema(description = "部门/车间")
    private String department;
    @Schema(description = "班组/产线")
    private String teamGroup;
    @Schema(description = "岗位")
    private String position;
    @Schema(description = "工种/工序")
    private String jobType;
    @Schema(description = "技能等级")
    private String skillLevel;
    @Schema(description = "擅长服装类型")
    private String specializedCategory;
    @Schema(description = "会操作的设备")
    private String operableEquipment;
    @Schema(description = "入职日期")
    private LocalDate hireDate;
    @Schema(description = "合同开始日期")
    private LocalDate contractStartDate;
    @Schema(description = "合同结束日期")
    private LocalDate contractEndDate;
    @Schema(description = "在职状态")
    private String employmentStatus;
    @Schema(description = "离职日期")
    private LocalDate resignationDate;
    @Schema(description = "离职原因")
    private String resignationReason;
    @Schema(description = "计薪方式")
    private String salaryType;
    @Schema(description = "底薪/保底工资")
    private BigDecimal baseSalary;
    @Schema(description = "计件单价")
    private BigDecimal pieceRate;
    @Schema(description = "社保号")
    private String socialInsuranceNumber;
    @Schema(description = "银行账号")
    private String bankAccount;
    @Schema(description = "日均产量")
    private BigDecimal dailyOutputAvg;
    @Schema(description = "质量合格率(%)")
    private BigDecimal qualityPassRate;
    @Schema(description = "返工率(%)")
    private BigDecimal reworkRate;
    @Schema(description = "绩效评分")
    private BigDecimal performanceRating;
    @Schema(description = "创建时间")
    private String createdAt;
    @Schema(description = "更新时间")
    private String updatedAt;
    @Schema(description = "创建人")
    private String createdBy;
    @Schema(description = "更新人")
    private String updatedBy;
    @Schema(description = "备注")
    private String notes;
}
